Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/nomadnetwork/NomadNetworkPage.vue a1502d5ee89b110682265717a1f056aaaf908b94 (a1502d5e) Text, 87.55 KB

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-1 min-w-0 h-full overflow-hidden"Tb4b4b4>
T8b949e<!-- nomadnetwork sidebar -->
Tb4b4b4<Tff7b72NomadNetworkSidebar
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isPopoutModeTa5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'hidden sm:flex'Tff7b72: Te6edf3selectedNode Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3collapsedTff7b72=Ta5d6ff"Te6edf3nomadNetworkSidebarCollapsedTa5d6ff"
Tb4b4b4:Te6edf3nodesTff7b72=Ta5d6ff"Te6edf3nodesTa5d6ff"
Tb4b4b4:Te6edf3favouritesTff7b72=Ta5d6ff"Te6edf3favouritesTa5d6ff"
Tb4b4b4:Te6edf3selected-destination-hashTff7b72=Ta5d6ff"Te6edf3selectedNodeTff7b72?Tb4b4b4.Te6edf3destination_hashTa5d6ff"
Tb4b4b4:Te6edf3nodes-search-termTff7b72=Ta5d6ff"Te6edf3nodesSearchTermTa5d6ff"
Tb4b4b4:Te6edf3total-nodes-countTff7b72=Ta5d6ff"Te6edf3totalNodesCountTa5d6ff"
Tb4b4b4:Te6edf3is-loading-more-nodesTff7b72=Ta5d6ff"Te6edf3isLoadingMoreNodesTa5d6ff"
Tb4b4b4:Te6edf3has-more-nodesTff7b72=Ta5d6ff"Te6edf3hasMoreNodesTa5d6ff"
Tb4b4b4@Te6edf3node-clickTff7b72=Ta5d6ff"Te6edf3onNodeClickTa5d6ff"
Tb4b4b4@Te6edf3rename-favouriteTff7b72=Ta5d6ff"Te6edf3onRenameFavouriteTa5d6ff"
Tb4b4b4@Te6edf3remove-favouriteTff7b72=Ta5d6ff"Te6edf3onRemoveFavouriteTa5d6ff"
Tb4b4b4@Te6edf3add-favouriteTff7b72=Ta5d6ff"Te6edf3addFavouriteTa5d6ff"
Tb4b4b4@Te6edf3nodes-search-changedTff7b72=Ta5d6ff"Te6edf3onNodesSearchChangedTa5d6ff"
Tb4b4b4@Te6edf3load-more-nodesTff7b72=Ta5d6ff"Te6edf3loadMoreNodesTa5d6ff"
Tb4b4b4@Te6edf3toggle-collapseTff7b72=Ta5d6ff"Te6edf3nomadNetworkSidebarCollapsed Tff7b72= Tff7b72!Te6edf3nomadNetworkSidebarCollapsedTa5d6ff"
Tb4b4b4/Tb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex-col flex-1 overflow-hidden min-w-0 bg-slate-50 dark:bg-zinc-950"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3selectedNode Tff7b72? Ta5d6ff'flex' Tff7b72: Ta5d6ff'hidden sm:flex'Ta5d6ff"
Tb4b4b4>
T8b949e<!-- node -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedNodeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col h-full min-h-0 bg-white dark:bg-zinc-950 overflow-hidden sm:m-0 sm:border-0 relative"
Tb4b4b4>
T8b949e<!-- banished overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_effect_enabled Tff7b72&& Te6edf3isSelectedNodeBlockedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"banished-overlay"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3backgroundTff7b72: Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_color Tff7b72+ Ta5d6ff'33' Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"banished-text !opacity-100 !text-white !shadow-lg !bg-red-600 !px-4 !py-2 !rounded-xl !border-2 !tracking-widest"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{
Ta5d6ff'background-color'Tff7b72: Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_colorTb4b4b4,
Ta5d6ff'border-color'Tff7b72: Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_colorTb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3GlobalStateTb4b4b4.Te6edf3configTb4b4b4.Te6edf3banished_text Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- header -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1 p-2 border-b border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 min-w-0"
Tb4b4b4>
T8b949e<!-- favourite button -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto shrink-0 mr-1"Tb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isFavouriteTb4b4b4(Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-yellow-500 dark:text-yellow-300"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'nomadnet.remove_favourite'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeFavouriteTb4b4b4(Te6edf3selectedNodeTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"star" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3v-else
Te6edf3classTff7b72=Ta5d6ff"text-gray-700 dark:text-gray-300"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'nomadnet.add_favourite'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addFavouriteTb4b4b4(Te6edf3selectedNodeTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"star-outline" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- node info -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto dark:text-gray-100 flex-1 min-w-0 flex items-baseline gap-1 overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"font-semibold truncate inline-block min-w-0 max-w-[min(100%,12rem)] sm:max-w-xs md:max-w-sm"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3selectedNodeTb4b4b4.Te6edf3display_nameTa5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3selectedNodeTb4b4b4.Te6edf3display_name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedNodePathTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-sm cursor-pointer whitespace-nowrap flex-shrink-0 hidden sm:inline"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3onDestinationPathClickTb4b4b4(Te6edf3selectedNodePathTb4b4b4)Ta5d6ff"
Tb4b4b4>
- Tff7b72{{ Te6edf3selectedNodePathTb4b4b4.Te6edf3hops Tff7b72}}
Tff7b72{{ Te6edf3selectedNodePathTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"app.hop"Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"app.hops_plural"Tb4b4b4) Tff7b72}}
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.path_away_suffix"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3navbarPageStatsTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-gray-500 dark:text-gray-400 font-normal"Tb4b4b4>
- Tff7b72{{ Te6edf3navbarPageStatsTb4b4b4.Te6edf3duration Tff7b72}} - Tff7b72{{ Te6edf3navbarPageStatsTb4b4b4.Te6edf3sizeLabel Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- archive button -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pageArchivesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72|| Te6edf3nodePageContentTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"my-auto shrink-0 relative"Tb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"text-gray-700 dark:text-gray-300"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'text-blue-500 dark:text-blue-400'Tff7b72: Te6edf3pageArchivesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'app.archives'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleArchiveDropdownTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"archive" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
T8b949e<!-- archive dropdown -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isArchiveDropdownOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute right-0 mt-2 w-64 bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 rounded-lg shadow-lg z-50 overflow-hidden"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"p-2 border-b border-gray-100 dark:border-zinc-800 font-semibold text-xs text-gray-500 dark:text-gray-400 uppercase tracking-wider flex justify-between items-center"
Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.page_archives"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3nodePageContentTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'nomadnet.archive_current_version'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3manualArchiveTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-h-64 overflow-y-auto"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pageArchivesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-3 text-sm text-gray-500 dark:text-gray-400 text-center"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.no_archives_for_this_page"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3archive Tff7b72in Te6edf3pageArchivesTa5d6ff"
Te6edf3v-else
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3archiveTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"p-2 hover:bg-gray-50 dark:hover:bg-zinc-800 cursor-pointer border-b last:border-b-0 border-gray-100 dark:border-zinc-800"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadArchivedPageTb4b4b4(Te6edf3archiveTb4b4b4.Te6edf3idTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium dark:text-gray-200"Tb4b4b4>
Tff7b72{{ Te6edf3formatDateTb4b4b4(Te6edf3archiveTb4b4b4.Te6edf3created_atTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3archiveTb4b4b4.Te6edf3hashTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff16Tb4b4b4) Tff7b72}}...
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"lg:hidden shrink-0 text-gray-700 dark:text-gray-300"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'nomadnet.identify'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3identifyTb4b4b4(Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"fingerprint" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"hidden lg:flex items-center gap-1 shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"text-gray-700 dark:text-gray-300"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'nomadnet.identify'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3identifyTb4b4b4(Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"fingerprint" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"text-gray-700 dark:text-gray-300"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'nomadnet.pop_out_browser'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openNomadnetPopoutTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"open-in-new" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"text-gray-700 dark:text-gray-300"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'common.cancel'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3onCloseNodeViewerTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72DropDownMenu Te6edf3classTff7b72=Ta5d6ff"lg:hidden shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3buttonTb4b4b4>
Tb4b4b4<Tff7b72IconButton Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.more_actions'Tb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-gray-700 dark:text-gray-300"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"dots-horizontal" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template #Te6edf3itemsTb4b4b4>
Tb4b4b4<Tff7b72DropDownMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openNomadnetPopoutTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"open-in-new" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.pop_out_browser"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72DropDownMenuItemTb4b4b4>
Tb4b4b4<Tff7b72DropDownMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3onCloseNodeViewerTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72DropDownMenuItemTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72DropDownMenuTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- browser navigation -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center w-full min-w-0 border-gray-300 dark:border-zinc-800 border-b p-2 gap-0.5 overflow-x-auto"
Tb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"shrink-0"
Te6edf3titleTff7b72=Ta5d6ff"Home"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadNodePageTb4b4b4(Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4, Te6edf3defaultNodePagePathTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"home" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72IconButton Te6edf3classTff7b72=Ta5d6ff"shrink-0" Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'common.refresh'Tb4b4b4)Ta5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3reloadNodePageTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"refresh" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"shrink-0"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'app.toggle_source'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'bg-green-500/10 text-green-600 dark:text-green-400'Tff7b72: Te6edf3isShowingNodePageSource Tb4b4b4}Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleNodePageSourceTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"code-tags" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72IconButton
Te6edf3classTff7b72=Ta5d6ff"shrink-0"
Te6edf3titleTff7b72=Ta5d6ff"Back"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3nodePagePathHistoryTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadPreviousNodePageTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-left" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto mx-1 min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3nodePagePathUrlInputTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'nomadnet.enter_nomadnet_url'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50 dark:bg-zinc-900 border border-gray-300 dark:border-zinc-700 text-gray-900 dark:text-gray-100 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full px-2.5 py-1.5 dark:placeholder-gray-400"
Tb4b4b4@Te6edf3keyupTb4b4b4.Te6edf3enterTff7b72=Ta5d6ff"Te6edf3onNodePageUrlClickTb4b4b4(Te6edf3nodePagePathUrlInputTb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72IconButton Te6edf3classTff7b72=Ta5d6ff"shrink-0" Te6edf3titleTff7b72=Ta5d6ff"Go" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3onNodePageUrlClickTb4b4b4(Te6edf3nodePagePathUrlInputTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-right" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72IconButtonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- page content: capture-phase clicks so <a href> is handled before browser default navigation -->
Tb4b4b4<Tff7b72div
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Ta5d6ff'flex-1 overflow-y-auto nodeContainer relative [contain:layout_paint]'Tb4b4b4,
Te6edf3nomadRenderedShellFullBleed
Tff7b72? Ta5d6ff'p-0 bg-transparent text-gray-900 dark:text-gray-100'
Tff7b72: Ta5d6ff'p-3 bg-black text-white'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3captureTff7b72=Ta5d6ff"Te6edf3onElementClickTa5d6ff"
Tb4b4b4>
T8b949e<!-- archived version notice -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isShowingArchivedVersionTa5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Ta5d6ff'mb-4 p-2 bg-yellow-900/40 border border-yellow-700/50 rounded flex items-center justify-between text-yellow-200'Tb4b4b4,
Te6edf3nomadRenderedShellFullBleed Tff7b72? Ta5d6ff'mx-3 mt-3' Tff7b72: Ta5d6ff''Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"clock" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3archivedAtTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.viewing_archived_version_from"Tb4b4b4, Tb4b4b4{ Te6edf3timeTff7b72: Te6edf3formatDateTb4b4b4(Te6edf3archivedAtTb4b4b4) Tb4b4b4}Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.viewing_archived_version"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"text-xs bg-yellow-700/50 hover:bg-yellow-700 px-2 py-1 rounded transition"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3reloadNodePageTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.load_live"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isLoadingNodePageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto"Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3classTff7b72=Ta5d6ff"animate-spin -ml-1 mr-3 h-5 w-5 text-white"
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Tb4b4b4>
Tb4b4b4<Tff7b72circle
Te6edf3classTff7b72=Ta5d6ff"opacity-25"
Te6edf3cxTff7b72=Ta5d6ff"12"
Te6edf3cyTff7b72=Ta5d6ff"12"
Te6edf3rTff7b72=Ta5d6ff"10"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3stroke-widthTff7b72=Ta5d6ff"4"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72circleTb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3classTff7b72=Ta5d6ff"opacity-75"
Te6edf3fillTff7b72=Ta5d6ff"currentColor"
Te6edf3dTff7b72=Ta5d6ff"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72pathTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto flex-1"Tb4b4b4>Tff7b72{{ Te6edf3nomadnetPageLoadingLine Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"my-auto text-white bg-red-600 hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-800 rounded px-3 py-1 text-sm font-semibold cursor-pointer ml-3"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelPageDownloadTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"
Te6edf3nodePageContent Tff7b72=== Ta5d6ff'request_failed' Tff7b72||
Tb4b4b4(Te6edf3nodePageContent Tff7b72&& Te6edf3nodePageContentTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff'failure'Tb4b4b4)Tb4b4b4)
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center justify-center h-full text-center space-y-4"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-red-400 font-semibold text-lg"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.failed_to_load_page"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-gray-400 text-sm max-w-md"Tb4b4b4>Tff7b72{{ Te6edf3nodePageContent Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hasArchivesForCurrentPageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-300"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.archived_version_available"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-sm font-semibold text-white shadow hover:bg-blue-500 transition"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleArchiveDropdownTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"archive" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.view_archive"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- eslint-disable vue/no-v-html -->
Tb4b4b4<Tff7b72div
Te6edf3v-else
Te6edf3v-memoTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3renderedNodePageHtmlTb4b4b4, Te6edf3nodePagePathTb4b4b4, Te6edf3isShowingNodePageSourceTb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3nomadPageContentClassesTa5d6ff"
Te6edf3v-htmlTff7b72=Ta5d6ff"Te6edf3renderedNodePageHtmlTa5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- eslint-enable vue/no-v-html -->
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- file download bottom bar -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isDownloadingNodeFileTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex w-full border-gray-300 dark:border-zinc-800 border-t p-2 dark:text-gray-100"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto mr-2"Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3classTff7b72=Ta5d6ff"animate-spin h-5 w-5"
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Tb4b4b4>
Tb4b4b4<Tff7b72circle
Te6edf3classTff7b72=Ta5d6ff"opacity-25"
Te6edf3cxTff7b72=Ta5d6ff"12"
Te6edf3cyTff7b72=Ta5d6ff"12"
Te6edf3rTff7b72=Ta5d6ff"10"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3stroke-widthTff7b72=Ta5d6ff"4"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72circleTb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3classTff7b72=Ta5d6ff"opacity-75"
Te6edf3fillTff7b72=Ta5d6ff"currentColor"
Te6edf3dTff7b72=Ta5d6ff"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72pathTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"my-auto flex-1"Tb4b4b4>
Downloading: Tff7b72{{ Te6edf3nodeFilePath Tff7b72}} (Tff7b72{{ Te6edf3nodeFileProgress Tff7b72}}%)
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3nodeFileDownloadSpeed Tff7b72!== Tff7b72nullTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"ml-2 text-sm"Tb4b4b4>
- Tff7b72{{ Te6edf3formatBytesPerSecondTb4b4b4(Te6edf3nodeFileDownloadSpeedTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"my-auto text-white bg-red-600 hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-800 rounded px-3 py-1 text-sm font-semibold cursor-pointer"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelFileDownloadTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- no node selected -->
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex flex-col mx-auto my-auto text-center leading-5 dark:text-gray-100"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mx-auto mb-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"earth" Te6edf3classTff7b72=Ta5d6ff"w-6 h-6 dark:text-gray-300" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.no_active_node"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.select_node_to_browse"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mx-auto mt-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"my-auto inline-flex items-center gap-x-1 rounded-md bg-gray-500 px-2 py-1 text-sm font-semibold text-white shadow-sm hover:bg-gray-400 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-500 dark:bg-zinc-800 dark:text-white dark:hover:bg-zinc-700 dark:focus-visible:outline-zinc-500"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openUrlTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.open_nomadnet_url"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3MicronParser Tff7b72from Ta5d6ff"../../js/MicronParser"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3renderNomadPageByPath Tb4b4b4} Tff7b72from Ta5d6ff"../../js/NomadPageRenderer"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3WebSocketConnection Tff7b72from Ta5d6ff"../../js/WebSocketConnection"Tb4b4b4;
Tff7b72import Te6edf3NomadNetworkSidebar Tff7b72from Ta5d6ff"./NomadNetworkSidebar.vue"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3IconButton Tff7b72from Ta5d6ff"../IconButton.vue"Tb4b4b4;
Tff7b72import Te6edf3DropDownMenu Tff7b72from Ta5d6ff"../DropDownMenu.vue"Tb4b4b4;
Tff7b72import Te6edf3DropDownMenuItem Tff7b72from Ta5d6ff"../DropDownMenuItem.vue"Tb4b4b4;
Tff7b72import Te6edf3GlobalState Tff7b72from Ta5d6ff"../../js/GlobalState"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"NomadNetworkPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3NomadNetworkSidebarTb4b4b4,
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3IconButtonTb4b4b4,
Te6edf3DropDownMenuTb4b4b4,
Te6edf3DropDownMenuItemTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3destinationHashTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657StringTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3GlobalStateTb4b4b4,
Te6edf3reloadIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodesRefreshTimeoutTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodesListAbortControllerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodeDetailAbortControllerTff7b72: Tff7b72nullTb4b4b4,

Te6edf3nomadNetworkSidebarCollapsedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nodesTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3totalNodesCountTff7b72: T79c0ff0Tb4b4b4,
Te6edf3hasMoreNodesTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isLoadingMoreNodesTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nodesSearchTermTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3pageSizeTff7b72: T79c0ff50Tb4b4b4,
Te6edf3selectedNodeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedNodePathTff7b72: Tff7b72nullTb4b4b4,

Te6edf3favouritesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,

Te6edf3isLoadingNodePageTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isShowingNodePageSourceTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nodePageRequestSequenceTff7b72: T79c0ff0Tb4b4b4,
Te6edf3nodePagePathTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodePagePathUrlInputTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodePageContentTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodePageProgressTff7b72: T79c0ff0Tb4b4b4,
Te6edf3nodePageLoadPhaseTff7b72: Tff7b72nullTb4b4b4,
Te6edf3pageLoadStartedAtTff7b72: Tff7b72nullTb4b4b4,
Te6edf3lastPageLoadDurationMsTff7b72: Tff7b72nullTb4b4b4,
Te6edf3lastPageContentBytesTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodePagePathHistoryTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3nodePageCacheTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3currentPageDownloadIdTff7b72: Tff7b72nullTb4b4b4,

Te6edf3isDownloadingNodeFileTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nodeFilePathTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodeFileProgressTff7b72: T79c0ff0Tb4b4b4,
Te6edf3nodeFileDownloadStartTimeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodeFileLastProgressTimeTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodeFileLastProgressValueTff7b72: T79c0ff0Tb4b4b4,
Te6edf3nodeFileDownloadSpeedTff7b72: Tff7b72nullTb4b4b4,
Te6edf3currentFileDownloadIdTff7b72: Tff7b72nullTb4b4b4,

Te6edf3nomadnetPageDownloadCallbacksTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3nomadnetFileDownloadCallbacksTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,

Te6edf3pageArchivesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3isArchiveDropdownOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isLoadingArchivesTff7b72: Tff7b72falseTb4b4b4,
Te6edf3hasArchivesForCurrentPageTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isShowingArchivedVersionTff7b72: Tff7b72falseTb4b4b4,
Te6edf3archivedAtTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isSelectedNodeBlockedTff7b72: Tff7b72falseTb4b4b4,

Te6edf3pagePartialsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3loadedPartialIdsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3partialIdsByKeyTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3partialRefreshByKeyTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3partialRefreshTimersTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3processPartialsRafTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3defaultNodePagePathTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3p Tff7b72= Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3nomad_default_page_pathTb4b4b4;
Tff7b72return Tff7b72typeof Te6edf3p Tff7b72=== Ta5d6ff"string" Tff7b72&& Te6edf3pTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"/page/"Tb4b4b4) Tff7b72? Te6edf3p Tff7b72: Ta5d6ff"/page/index.mu"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3nomadRenderOptionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3c Tff7b72= Te6edf3GlobalStateTb4b4b4.Te6edf3config Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3renderMarkdownTff7b72: Te6edf3cTb4b4b4.Te6edf3nomad_render_markdown_enabled Tff7b72!== Tff7b72falseTb4b4b4,
Te6edf3renderHtmlTff7b72: Te6edf3cTb4b4b4.Te6edf3nomad_render_html_enabled Tff7b72!== Tff7b72falseTb4b4b4,
Te6edf3renderPlaintextTff7b72: Te6edf3cTb4b4b4.Te6edf3nomad_render_plaintext_enabled Tff7b72!== Tff7b72falseTb4b4b4,
Te6edf3nomadDestinationHashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedNodeTff7b72?Tb4b4b4.Te6edf3destination_hash Tff7b72|| Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3blockedDestinationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinationsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3popoutRouteTypeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3metaTff7b72?Tb4b4b4.Te6edf3popoutTypeTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3popoutTypeTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3queryTff7b72?Tb4b4b4.Te6edf3popout Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3getHashPopoutValueTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isPopoutModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3popoutRouteType Tff7b72=== Ta5d6ff"nomad"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3navbarPageStatsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lastPageLoadDurationMs Tff7b72== Tff7b72null Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3lastPageContentBytes Tff7b72== Tff7b72null Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedNodePathTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{
Te6edf3durationTff7b72: Tff7b72thisTb4b4b4.Te6edf3formatShortDurationTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lastPageLoadDurationMsTb4b4b4)Tb4b4b4,
Te6edf3sizeLabelTff7b72: Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lastPageContentBytesTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3nomadnetPageLoadingLineTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3phase Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72|| Ta5d6ff"finding_path"Tb4b4b4;
Tff7b72const Te6edf3key Tff7b72= Ta5d6ff`Ta5d6ffnomadnet.load_phase_Tffd700${Te6edf3phaseTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3translated Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3base Tff7b72=
Tff7b72typeof Te6edf3translated Tff7b72=== Ta5d6ff"string" Tff7b72&& Te6edf3translated Tff7b72!== Te6edf3key
Tff7b72? Te6edf3translated
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.load_phase_default"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePageProgress Tff7b72> T79c0ff0 Tff7b72&& Tb4b4b4(Te6edf3phase Tff7b72=== Ta5d6ff"transferring" Tff7b72|| Te6edf3phase Tff7b72=== Ta5d6ff"requesting_page"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Te6edf3baseTffd700}Ta5d6ff (Tffd700${Tff7b72thisTb4b4b4.Te6edf3nodePageProgressTffd700}Ta5d6ff%)Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3baseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3renderedNodePageHtmlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3renderPageContentTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3nodePageContentTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3nomadRenderedShellFullBleedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isShowingNodePageSourceTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePageTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72=== Ta5d6ff"request_failed" Tff7b72||
Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72&& Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePageContentTb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"failure"Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Tb4b4b4[Te6edf3pTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"`"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4(Te6edf3p Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".mu"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3nomadPageContentClassesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isShowingNodePageSourceTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Ta5d6ff"h-full"Tb4b4b4, Ta5d6ff"break-words"Tb4b4b4, Ta5d6ff"whitespace-pre-wrap"Tb4b4b4, Ta5d6ff"text-gray-100"Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Tb4b4b4[Te6edf3pTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"`"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pl Tff7b72= Tb4b4b4(Te6edf3p Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isRich Tff7b72= Te6edf3plTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".mu"Tb4b4b4) Tff7b72|| Te6edf3plTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".md"Tb4b4b4) Tff7b72|| Te6edf3plTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".html"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isHtml Tff7b72= Te6edf3plTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".html"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isMd Tff7b72= Te6edf3plTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".md"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3classes Tff7b72= Tb4b4b4[Ta5d6ff"h-full"Tb4b4b4, Ta5d6ff"break-words"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nomadRenderedShellFullBleed Tff7b72&& Tff7b72!Te6edf3isHtmlTb4b4b4) Tb4b4b4{
Te6edf3classesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"px-3"Tb4b4b4, Ta5d6ff"py-3"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3isRichTb4b4b4) Tb4b4b4{
Te6edf3classesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"nomad-page-rich"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3classesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"whitespace-pre-wrap"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3isHtmlTb4b4b4) Tb4b4b4{
Te6edf3classesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"nomad-page-html-host"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3plTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".mu"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3classesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"text-gray-100"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3classesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"text-gray-900"Tb4b4b4, Ta5d6ff"dark:text-gray-100"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3isMdTb4b4b4) Tb4b4b4{
Te6edf3classesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff"nomad-markdown-host"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3classesTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3renderedNodePageHtmlTb4b4b4(Te6edf3newValTb4b4b4, Te6edf3oldValTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3newVal Tff7b72!== Te6edf3oldValTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadedPartialIds Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3scheduleProcessPartialsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedNodeTff7b72: Tb4b4b4{
Te6edf3handlerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3checkIfSelectedNodeBlockedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deepTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3blockedDestinationsTff7b72: Tb4b4b4{
Te6edf3handlerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3checkIfSelectedNodeBlockedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deepTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3processPartialsRaf Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3processPartialsRafTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3processPartialsRaf Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesRefreshTimeoutTb4b4b4) Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesRefreshTimeoutTb4b4b4)Tb4b4b4;
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reloadIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodesListAbortControllerTff7b72?Tb4b4b4.Te6edf3abortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeDetailAbortControllerTff7b72?Tb4b4b4.Te6edf3abortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3clearPartialsTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3WebSocketConnectionTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// listen for websocket messages
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;

T8b949e// load nomadnetwork node if a destination hash was provided on page load
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tb4b4b4(Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// fetch updated announce as we are probably loading node page before we loaded the announces list
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getNomadnetworkNodeAnnounceTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3destinationHashTb4b4b4)Tb4b4b4;

T8b949e// set selected node so the viewer shows up
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3destinationHashTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3destinationHashTb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// if no announce found, create a placeholder node so we can still view archives
Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72= Tb4b4b4{
Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3destinationHashTb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Unknown Node"Tb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e// get path to destination
Tff7b72thisTb4b4b4.Te6edf3getNodePathTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3destinationHashTb4b4b4)Tb4b4b4;

T8b949e// check if we have a path or archive_id in query params
Tff7b72const Te6edf3path Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3pathTb4b4b4;
Tff7b72const Te6edf3archiveId Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3queryTb4b4b4.Te6edf3archive_idTb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3archiveIdTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadArchivedPageTb4b4b4(Te6edf3archiveIdTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3pathTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3onNodePageUrlClickTb4b4b4(Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3pathTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3onNodePageUrlClickTb4b4b4(Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Tff7b72thisTb4b4b4.Te6edf3defaultNodePagePathTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3getFavouritesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3getNomadnetworkNodeAnnouncesTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// update info every few seconds
Tff7b72thisTb4b4b4.Te6edf3reloadInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getFavouritesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff5000Tb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3scheduleProcessPartialsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3scheduleProcessPartialsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3processPartialsRaf Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3processPartialsRafTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3processPartialsRaf Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3processPartialsRaf Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3processPartialsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openNomadnetPopoutTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3destinationHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hash Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3encodedHash Tff7b72= Tffa657encodeURIComponentTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Ta5d6ff`Tffd700${Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3originTffd700}Tffd700${Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3pathnameTffd700}Ta5d6ff#/popout/nomadnetwork/Tffd700${Te6edf3encodedHashTffd700}Ta5d6ff`Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3openTb4b4b4(Te6edf3urlTb4b4b4, Ta5d6ff"_blank"Tb4b4b4, Ta5d6ff"width=1100,height=800,noopener"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3checkIfSelectedNodeBlockedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSelectedNodeBlocked Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3identityHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3identity_hash Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isSelectedNodeBlocked Tff7b72= Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinationsTb4b4b4.Te6edf3someTb4b4b4(
Tb4b4b4(Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3bTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3identityHash
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onElementClickTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3nomadLink Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3closestTb4b4b4(Ta5d6ff"a.nomadnet-link[data-nomadnet-url]"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nomadLinkTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3stopPropagationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Te6edf3nomadLinkTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-nomadnet-url"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onNodePageUrlClickTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3fragAnchor Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3closestTb4b4b4(Ta5d6ff"a[href]"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(
Te6edf3fragAnchor Tff7b72&&
Te6edf3fragAnchorTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"href"Tb4b4b4) Tff7b72&&
Te6edf3fragAnchorTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"href"Tb4b4b4) Tff7b72!== Ta5d6ff"#" Tff7b72&&
Te6edf3fragAnchorTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"href"Tb4b4b4)Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"#"Tb4b4b4) Tff7b72&&
Tff7b72!Te6edf3fragAnchorTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-nomadnet-url"Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3stopPropagationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3raw Tff7b72= Te6edf3fragAnchorTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"href"Tb4b4b4)Tb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3id Tff7b72= Tffa657decodeURIComponentTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3el Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3scrollIntoViewTb4b4b4(Tb4b4b4{ Te6edf3behaviorTff7b72: Ta5d6ff"smooth"Tb4b4b4, Te6edf3blockTff7b72: Ta5d6ff"nearest" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3element Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3closestTb4b4b4(Ta5d6ff'[data-action="openNode"]'Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3elementTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3stopPropagationTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3destination Tff7b72= Te6edf3elementTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-destination"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fields Tff7b72= Te6edf3elementTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-fields"Tb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3onNodePageUrlClickTb4b4b4(Te6edf3destinationTb4b4b4, Te6edf3fieldsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onWebsocketMessageTb4b4b4(Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3json Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3messageTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tff7b72switch Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"announce"Tff7b72: Tb4b4b4{
Tff7b72const Te6edf3aspect Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3announceTb4b4b4.Te6edf3aspectTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3aspect Tff7b72=== Ta5d6ff"nomadnetwork.node"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateNodeFromAnnounceTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3announceTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"nomadnet.page.download"Tff7b72: Tb4b4b4{
T8b949e// get data from server
Tff7b72const Te6edf3nomadnetPageDownload Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3nomadnet_page_downloadTb4b4b4;
Tff7b72const Te6edf3downloadId Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3download_idTb4b4b4;

T8b949e// get response page path
Tff7b72const Te6edf3responsePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff:Tffd700${Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3page_pathTffd700}Ta5d6ff`Tb4b4b4;

T8b949e// handle success for archived versions first (before path check)
Tff7b72if Tb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"success" Tff7b72&& Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3is_archived_versionTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72= Te6edf3responsePagePathTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePagePathUrlInput Tff7b72= Te6edf3responsePagePathTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isShowingArchivedVersion Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3archivedAt Tff7b72= Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3archived_atTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72= Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3page_contentTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageProgress Tff7b72= T79c0ff100Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4{
Tff7b72const Te6edf3pc Tff7b72= Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3page_content Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageLoadDurationMs Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3pageLoadStartedAt Tff7b72!= Tff7b72null Tff7b72? Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72thisTb4b4b4.Te6edf3pageLoadStartedAt Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageContentBytes Tff7b72= Tff7b72new Te6edf3TextEncoderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3encodeTb4b4b4(Te6edf3pcTb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3fetchArchivesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// ignore response if it's for a different page than currently requested/viewed
T8b949e// but allow responses for partial pages (they have registered callbacks)
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72&& Te6edf3responsePagePath Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3callbackKey Tff7b72= Tff7b72thisTb4b4b4.Te6edf3getNomadnetPageDownloadCallbackKeyTb4b4b4(
Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3page_path
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nomadnetPageDownloadCallbacksTb4b4b4[Te6edf3callbackKeyTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// handle started status
Tff7b72if Tb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"started"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72= Te6edf3downloadIdTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Ta5d6ff"finding_path"Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"phase"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72!== Te6edf3downloadIdTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72&& Te6edf3responsePagePath Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3load_phase Tff7b72|| Ta5d6ff"finding_path"Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// find download callbacks
Tff7b72const Te6edf3getNomadnetPageDownloadCallbackKey Tff7b72= Tff7b72thisTb4b4b4.Te6edf3getNomadnetPageDownloadCallbackKeyTb4b4b4(
Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3page_path
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3nomadnetPageDownloadCallback Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3nomadnetPageDownloadCallbacksTb4b4b4[Te6edf3getNomadnetPageDownloadCallbackKeyTb4b4b4]Tb4b4b4;

T8b949e// if no callback found for other statuses, return
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3nomadnetPageDownloadCallbackTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// handle success
Tff7b72if Tb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"success"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3nomadnetPageDownloadCallbackTb4b4b4.Te6edf3onSuccessCallbackTb4b4b4) Tb4b4b4{
Te6edf3nomadnetPageDownloadCallbackTb4b4b4.Te6edf3onSuccessCallbackTb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3page_contentTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3nomadnetPageDownloadCallbacksTb4b4b4[Te6edf3getNomadnetPageDownloadCallbackKeyTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// handle failure
Tff7b72if Tb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"failure" Tff7b72&& Te6edf3nomadnetPageDownloadCallbackTb4b4b4.Te6edf3onFailureCallbackTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasArchivesForCurrentPage Tff7b72= Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3has_archivesTb4b4b4;
Te6edf3nomadnetPageDownloadCallbackTb4b4b4.Te6edf3onFailureCallbackTb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3failure_reasonTb4b4b4)Tb4b4b4;
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3nomadnetPageDownloadCallbacksTb4b4b4[Te6edf3getNomadnetPageDownloadCallbackKeyTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// handle progress
Tff7b72if Tb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"progress" Tff7b72&& Te6edf3nomadnetPageDownloadCallbackTb4b4b4.Te6edf3onProgressCallbackTb4b4b4) Tb4b4b4{
Te6edf3nomadnetPageDownloadCallbackTb4b4b4.Te6edf3onProgressCallbackTb4b4b4(Te6edf3nomadnetPageDownloadTb4b4b4.Te6edf3progressTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"nomadnet.file.download"Tff7b72: Tb4b4b4{
T8b949e// get data from server
Tff7b72const Te6edf3nomadnetFileDownload Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3nomadnet_file_downloadTb4b4b4;
Tff7b72const Te6edf3downloadId Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3download_idTb4b4b4;

T8b949e// handle started status
Tff7b72if Tb4b4b4(Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"started"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentFileDownloadId Tff7b72= Te6edf3downloadIdTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// find download callbacks
Tff7b72const Te6edf3getNomadnetFileDownloadCallbackKey Tff7b72= Tff7b72thisTb4b4b4.Te6edf3getNomadnetFileDownloadCallbackKeyTb4b4b4(
Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3file_path
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3nomadnetFileDownloadCallback Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3nomadnetFileDownloadCallbacksTb4b4b4[Te6edf3getNomadnetFileDownloadCallbackKeyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3nomadnetFileDownloadCallbackTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(
Ta5d6ff"did not find nomadnet file download callback for key: " Tff7b72+
Te6edf3getNomadnetFileDownloadCallbackKey
Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// handle success
Tff7b72if Tb4b4b4(Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"success" Tff7b72&& Te6edf3nomadnetFileDownloadCallbackTb4b4b4.Te6edf3onSuccessCallbackTb4b4b4) Tb4b4b4{
Te6edf3nomadnetFileDownloadCallbackTb4b4b4.Te6edf3onSuccessCallbackTb4b4b4(
Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3file_nameTb4b4b4,
Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3file_bytes
Tb4b4b4)Tb4b4b4;
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3nomadnetFileDownloadCallbacksTb4b4b4[Te6edf3getNomadnetFileDownloadCallbackKeyTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentFileDownloadId Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// handle failure
Tff7b72if Tb4b4b4(Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"failure" Tff7b72&& Te6edf3nomadnetFileDownloadCallbackTb4b4b4.Te6edf3onFailureCallbackTb4b4b4) Tb4b4b4{
Te6edf3nomadnetFileDownloadCallbackTb4b4b4.Te6edf3onFailureCallbackTb4b4b4(Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3failure_reasonTb4b4b4)Tb4b4b4;
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3nomadnetFileDownloadCallbacksTb4b4b4[Te6edf3getNomadnetFileDownloadCallbackKeyTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentFileDownloadId Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// handle progress
Tff7b72if Tb4b4b4(Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"progress" Tff7b72&& Te6edf3nomadnetFileDownloadCallbackTb4b4b4.Te6edf3onProgressCallbackTb4b4b4) Tb4b4b4{
Te6edf3nomadnetFileDownloadCallbackTb4b4b4.Te6edf3onProgressCallbackTb4b4b4(Te6edf3nomadnetFileDownloadTb4b4b4.Te6edf3progressTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"nomadnet.download.cancelled"Tff7b72: Tb4b4b4{
T8b949e// handle download cancellation
Tff7b72const Te6edf3downloadId Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3download_idTb4b4b4;

T8b949e// clear page download if it matches
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72=== Te6edf3downloadIdTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff"Download cancelled"Tb4b4b4;
Tb4b4b4}

T8b949e// clear file download if it matches
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentFileDownloadId Tff7b72=== Te6edf3downloadIdTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentFileDownloadId Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isDownloadingNodeFile Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadSpeed Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}

Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"nomadnet.page.archives"Tff7b72: Tb4b4b4{
Tff7b72const Te6edf3currentRelativePath Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff":"Tb4b4b4)
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff":"Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4;

Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72&&
Te6edf3jsonTb4b4b4.Te6edf3destination_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hash Tff7b72&&
Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3page_path Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72|| Te6edf3jsonTb4b4b4.Te6edf3page_path Tff7b72=== Te6edf3currentRelativePathTb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pageArchives Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3archivesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingArchives Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"nomadnet.page.archive.added"Tff7b72: Tb4b4b4{
Tff7b72const Te6edf3currentRelativePath Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff":"Tb4b4b4)
Tff7b72? Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff":"Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4;

Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72&&
Te6edf3jsonTb4b4b4.Te6edf3destination_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hash Tff7b72&&
Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3page_path Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72|| Te6edf3jsonTb4b4b4.Te6edf3page_path Tff7b72=== Te6edf3currentRelativePathTb4b4b4)
Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.page_archived_successfully"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchArchivesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onDestinationPathClickTff7b72: Tff7b72function Tb4b4b4(Te6edf3pathTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(
Ta5d6ff`Tffd700${Te6edf3pathTb4b4b4.Te6edf3hopsTffd700}Ta5d6ff Tffd700${Te6edf3pathTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"app.hop"Tb4b4b4) Tff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"app.hops_plural"Tb4b4b4)Tffd700}Ta5d6ff away via Tffd700${Te6edf3pathTb4b4b4.Te6edf3next_hop_interfaceTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getFavouritesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/favourites"Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3favourites Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3favouritesTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// do nothing if failed to load favourites
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3isFavouriteTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3favouritesTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3favouriteTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3favouriteTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3destinationHashTb4b4b4;
Tb4b4b4}Tb4b4b4) Tff7b72!= Tff7b72null
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addFavouriteTb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{
T8b949e// add to favourites
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/favourites/add"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3display_nameTff7b72: Te6edf3nodeTb4b4b4.Te6edf3display_nameTb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// update favourites
Tff7b72thisTb4b4b4.Te6edf3getFavouritesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3removeFavouriteTb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{
T8b949e// remove from favourites
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/favourites/Tffd700${Te6edf3nodeTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// update favourites
Tff7b72thisTb4b4b4.Te6edf3getFavouritesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getNomadnetworkNodeAnnouncesTb4b4b4(Te6edf3append Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3appendTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesListAbortControllerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesListAbortControllerTb4b4b4.Te6edf3abortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3nodesListAbortController Tff7b72= Tff7b72new Te6edf3AbortControllerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodesListAbortControllerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesListAbortController Tff7b72= Tff7b72new Te6edf3AbortControllerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3offset Tff7b72= Te6edf3append Tff7b72? Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/announcesTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3aspectTff7b72: Ta5d6ff"nomadnetwork.node"Tb4b4b4,
Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4,
Te6edf3offsetTff7b72: Te6edf3offsetTb4b4b4,
Te6edf3searchTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodesSearchTermTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodesListAbortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3nodeAnnounces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3announcesTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3appendTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodes Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3totalNodesCount Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3total_count Tff7b72|| T79c0ff0Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3nodeAnnounce Tff7b72of Te6edf3nodeAnnouncesTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateNodeFromAnnounceTb4b4b4(Te6edf3nodeAnnounceTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3hasMoreNodes Tff7b72= Te6edf3nodeAnnouncesTb4b4b4.Te6edf3length Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3isCancelTff7b72?Tb4b4b4.Tb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoadingMoreNodes Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadMoreNodesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoadingMoreNodes Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasMoreNodesTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingMoreNodes Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getNomadnetworkNodeAnnouncesTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onNodesSearchChangedTb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesSearchTerm Tff7b72= Te6edf3termTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesRefreshTimeoutTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodesRefreshTimeoutTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3nodesRefreshTimeout Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getNomadnetworkNodeAnnouncesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getNomadnetworkNodeAnnounceTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodeDetailAbortControllerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodeDetailAbortControllerTb4b4b4.Te6edf3abortTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3nodeDetailAbortController Tff7b72= Tff7b72new Te6edf3AbortControllerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/announcesTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3limitTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3signalTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodeDetailAbortControllerTb4b4b4.Te6edf3signalTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3nodeAnnounces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3announcesTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3nodeAnnounce Tff7b72of Te6edf3nodeAnnouncesTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateNodeFromAnnounceTb4b4b4(Te6edf3nodeAnnounceTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3isCancelTff7b72?Tb4b4b4.Tb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3updateNodeFromAnnounceTff7b72: Tff7b72function Tb4b4b4(Te6edf3announceTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4[Te6edf3announceTb4b4b4.Te6edf3destination_hashTb4b4b4] Tff7b72= Te6edf3announceTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3openUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// ask for url
Tff7b72const Te6edf3url Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3promptTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.enter_nomadnet_url"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// navigate to the url
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3onNodePageUrlClickTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadNodePageTb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3pagePathTb4b4b4, Te6edf3fieldData Tff7b72= Tff7b72nullTb4b4b4, Te6edf3addToHistory Tff7b72= Tff7b72trueTb4b4b4, Te6edf3loadFromCache Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
T8b949e// update current route
Tff7b72const Te6edf3routeName Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isPopoutMode Tff7b72? Ta5d6ff"nomadnetwork-popout" Tff7b72: Ta5d6ff"nomadnetwork"Tb4b4b4;
Tff7b72const Te6edf3routeOptions Tff7b72= Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3routeNameTb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3destinationHashTff7b72: Te6edf3destinationHashTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isPopoutMode Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3queryTb4b4b4) Tb4b4b4{
Te6edf3routeOptionsTb4b4b4.Te6edf3query Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3query Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3routeOptionsTb4b4b4)Tb4b4b4;

T8b949e// get new sequence for this page load
Tff7b72const Te6edf3seq Tff7b72= Tff7b72++Tff7b72thisTb4b4b4.Te6edf3nodePageRequestSequenceTb4b4b4;

T8b949e// get previous page path
Tff7b72const Te6edf3previousNodePagePath Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4;

T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePage Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isShowingArchivedVersion Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3archivedAt Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pageArchives Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageProgress Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Ta5d6ff"finding_path"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pageLoadStartedAt Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageLoadDurationMs Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageContentBytes Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3clearPartialsTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// update url bar
Tff7b72thisTb4b4b4.Te6edf3nodePagePathUrlInput Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4;

T8b949e// update node path
Tff7b72thisTb4b4b4.Te6edf3getNodePathTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;

T8b949e// add to previous page to history if we are not loading that previous page
Tff7b72if Tb4b4b4(Te6edf3addToHistory Tff7b72&& Te6edf3previousNodePagePath Tff7b72!= Tff7b72null Tff7b72&& Te6edf3previousNodePagePath Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodePagePathHistoryTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3previousNodePagePathTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// check if we can load this page from the cache
Tff7b72if Tb4b4b4(Te6edf3loadFromCacheTb4b4b4) Tb4b4b4{
T8b949e// load from cache
Tff7b72const Te6edf3nodePagePathCacheKey Tff7b72= Ta5d6ff`Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3cachedNodePageContent Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePageCacheTb4b4b4[Te6edf3nodePagePathCacheKeyTb4b4b4]Tb4b4b4;

T8b949e// if page is cache, we can just return it now
Tff7b72if Tb4b4b4(Te6edf3cachedNodePageContent Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72= Te6edf3cachedNodePageContentTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageLoadDurationMs Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageContentBytes Tff7b72= Tff7b72new Te6edf3TextEncoderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3encodeTb4b4b4(Te6edf3cachedNodePageContentTb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchArchivesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3downloadNomadNetPageTb4b4b4(
Te6edf3destinationHashTb4b4b4,
Te6edf3pagePathTb4b4b4,
Te6edf3fieldDataTb4b4b4,
Tb4b4b4(Te6edf3pageContentTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// do nothing if callback is for a previous request
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3nodePageRequestSequenceTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update page content
Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72= Te6edf3pageContentTb4b4b4;

T8b949e// update cache
Tff7b72const Te6edf3nodePagePathCacheKey Tff7b72= Ta5d6ff`Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageCacheTb4b4b4[Te6edf3nodePagePathCacheKeyTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePageContentTb4b4b4;

T8b949e// update status
Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3pageLoadStartedAt Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3lastPageLoadDurationMs Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72thisTb4b4b4.Te6edf3pageLoadStartedAtTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3lastPageContentBytes Tff7b72= Tff7b72new Te6edf3TextEncoderTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3encodeTb4b4b4(Te6edf3pageContentTb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;

T8b949e// update node path
Tff7b72thisTb4b4b4.Te6edf3getNodePathTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;

T8b949e// check if this page has archives
Tff7b72thisTb4b4b4.Te6edf3fetchArchivesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Te6edf3failureReasonTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// do nothing if callback is for a previous request
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3nodePageRequestSequenceTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update page content
Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72= Ta5d6ff`Ta5d6ffFailed loading page: Tffd700${Te6edf3failureReasonTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageLoadDurationMs Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3lastPageContentBytes Tff7b72= Tff7b72nullTb4b4b4;

T8b949e// update node path
Tff7b72thisTb4b4b4.Te6edf3getNodePathTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Te6edf3progressTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// do nothing if callback is for a previous request
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3nodePageRequestSequenceTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update page content
Tff7b72thisTb4b4b4.Te6edf3nodePageProgress Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3progress Tff7b72* T79c0ff100Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearPartialsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tffa657ObjectTb4b4b4.Te6edf3valuesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3partialRefreshTimersTb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3tTb4b4b4) Tb4b4b4=> Te6edf3clearTimeoutTb4b4b4(Te6edf3tTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3partialRefreshTimers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pagePartials Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedPartialIds Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3partialIdsByKey Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3partialRefreshByKey Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3processPartialsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePageContent Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isShowingNodePageSourceTb4b4b4)
Tff7b72returnTb4b4b4;
Tff7b72const Tb4b4b4[Te6edf3pagePathWithoutDataTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"`"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3pagePathWithoutDataTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff".mu"Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePageContentTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"`{"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3container Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$elTb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff".nodeContainer"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3containerTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3placeholders Tff7b72= Te6edf3containerTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff".mu-partial"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3placeholdersTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3idsByKey Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3refreshByKey Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3needLoad Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3fieldsByKey Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3placeholdersTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3id Tff7b72= Te6edf3elTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-partial-id"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dest Tff7b72= Te6edf3elTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-dest"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3elTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-path"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3refreshAttr Tff7b72= Te6edf3elTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-refresh"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3refresh Tff7b72= Te6edf3refreshAttr Tff7b72? Tffa657parseIntTb4b4b4(Te6edf3refreshAttrTb4b4b4, T79c0ff10Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3fieldsStr Tff7b72= Te6edf3elTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-fields"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3key Tff7b72= Te6edf3dest Tff7b72+ Ta5d6ff":" Tff7b72+ Te6edf3pathTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3idsByKeyTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4) Te6edf3idsByKeyTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3idsByKeyTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3idTb4b4b4, Te6edf3refresh Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3refresh Tff7b72!= Tff7b72null Tff7b72&& Te6edf3refresh Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3refreshByKeyTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3refreshByKeyTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72?? Tff7b72InfinityTb4b4b4, Te6edf3refreshTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3fieldsStr Tff7b72&& Tff7b72!Te6edf3fieldsByKeyTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3fieldData Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3part Tff7b72of Te6edf3fieldsStrTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"|"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3eq Tff7b72= Te6edf3partTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff"="Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eq Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3name Tff7b72= Te6edf3partTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3eqTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"field_"Tb4b4b4)Tb4b4b4) Te6edf3name Tff7b72= Te6edf3nameTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff6Tb4b4b4)Tb4b4b4;
Te6edf3fieldDataTb4b4b4[Te6edf3nameTb4b4b4] Tff7b72= Te6edf3partTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3eq Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3fieldsByKeyTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3fieldDataTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3loadedPartialIdsTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4) Te6edf3needLoadTb4b4b4.Te6edf3addTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3partialIdsByKey Tff7b72= Te6edf3idsByKeyTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3partialRefreshByKey Tff7b72= Te6edf3refreshByKeyTb4b4b4;

Tff7b72const Te6edf3muParser Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3updatePartialDom Tff7b72= Tb4b4b4(Te6edf3htmlTb4b4b4, Te6edf3idsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3container Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$elTb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff".nodeContainer"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3containerTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4{ Te6edf3id Tb4b4b4} Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Te6edf3containerTb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff`Ta5d6ff[data-partial-id="Tffd700${Te6edf3idTffd700}Ta5d6ff"]Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Te6edf3needLoadTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3keyTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3colon Tff7b72= Te6edf3keyTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dest Tff7b72= Te6edf3keyTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3colonTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3colon Tff7b72>= T79c0ff0 Tff7b72? Te6edf3keyTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3colon Tff7b72+ T79c0ff1Tb4b4b4) Tff7b72: Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3fields Tff7b72= Te6edf3fieldsByKeyTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3downloadNomadNetPageTb4b4b4(
Te6edf3destTb4b4b4,
Te6edf3pathTb4b4b4,
Te6edf3fieldsTb4b4b4,
Tb4b4b4(Te6edf3pageContentTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3html Tff7b72= Te6edf3muParserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3pageContentTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3ids Tff7b72= Tff7b72thisTb4b4b4.Te6edf3partialIdsByKeyTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3idsTb4b4b4) Tb4b4b4{
Te6edf3updatePartialDomTb4b4b4(Te6edf3htmlTb4b4b4, Te6edf3idsTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4{ Te6edf3id Tb4b4b4} Tff7b72of Te6edf3idsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadedPartialIdsTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3scheduleProcessPartialsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3refreshSec Tff7b72= Tff7b72thisTb4b4b4.Te6edf3partialRefreshByKeyTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3refreshSec Tff7b72!= Tff7b72null Tff7b72&& Te6edf3refreshSec Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3scheduleRefresh Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3partialRefreshTimersTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3downloadNomadNetPageTb4b4b4(Te6edf3destTb4b4b4, Te6edf3pathTb4b4b4, Te6edf3fieldsTb4b4b4, Tb4b4b4(Te6edf3contentTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3h Tff7b72= Te6edf3muParserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3contentTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3idList Tff7b72= Tff7b72thisTb4b4b4.Te6edf3partialIdsByKeyTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3idListTb4b4b4) Tb4b4b4{
Te6edf3updatePartialDomTb4b4b4(Te6edf3hTb4b4b4, Te6edf3idListTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4{ Te6edf3id Tb4b4b4} Tff7b72of Te6edf3idListTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadedPartialIdsTb4b4b4[Te6edf3idTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3scheduleProcessPartialsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3scheduleRefreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, Te6edf3refreshSec Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3scheduleRefreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3renderPageContentTb4b4b4(Te6edf3pathTb4b4b4, Te6edf3contentTb4b4b4) Tb4b4b4{
T8b949e// render page content if we aren't viewing source
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isShowingNodePageSourceTb4b4b4) Tb4b4b4{
T8b949e// address:/page/index.mu`Data=123
Tff7b72const Tb4b4b4[Te6edf3pagePathWithoutDataTb4b4b4] Tff7b72= Te6edf3pathTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"`"Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3renderNomadPageByPathTb4b4b4(
Te6edf3pagePathWithoutDataTb4b4b4,
Te6edf3contentTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3pagePartialsTb4b4b4,
Te6edf3MicronParserTb4b4b4,
Tff7b72thisTb4b4b4.Te6edf3nomadRenderOptions
Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72return Te6edf3content
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/&/gTb4b4b4, Ta5d6ff"&amp;"Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/</gTb4b4b4, Ta5d6ff"&lt;"Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/>/gTb4b4b4, Ta5d6ff"&gt;"Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/"/gTb4b4b4, Ta5d6ff"&quot;"Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/'/gTb4b4b4, Ta5d6ff"&#039;"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleNodePageSourceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isShowingNodePageSource Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isShowingNodePageSourceTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3reloadNodePageTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// reload current node page without adding to history and without using cache
Tff7b72thisTb4b4b4.Te6edf3onNodePageUrlClickTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4, Tff7b72nullTb4b4b4, Tff7b72falseTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadPreviousNodePageTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// get the previous path from history, or do nothing
Tff7b72const Te6edf3previousNodePagePath Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathHistoryTb4b4b4.Te6edf3popTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3previousNodePagePathTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// load the page
Tff7b72thisTb4b4b4.Te6edf3onNodePageUrlClickTb4b4b4(Te6edf3previousNodePagePathTb4b4b4, Tff7b72nullTb4b4b4, Tff7b72nullTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3parseNomadnetworkUrlTff7b72: Tff7b72function Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
T8b949e// parse relative urls
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// remove leading ":"
Tff7b72var Te6edf3path Tff7b72= Te6edf3urlTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;

T8b949e// if page path is empty we should load default page path
Tff7b72if Tb4b4b4(Te6edf3path Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3path Tff7b72= Tff7b72thisTb4b4b4.Te6edf3defaultNodePagePathTb4b4b4;
Tb4b4b4}

Tff7b72return Tb4b4b4{
Te6edf3destination_hashTff7b72: Tff7b72nullTb4b4b4, T8b949e// node hash was not in provided url
Te6edf3pathTff7b72: Te6edf3pathTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e// parse absolute urls such as 00000000000000000000000000000000:/page/index.mu
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// parse destination hash and url
Tff7b72const Tb4b4b4[Te6edf3destinationHashTb4b4b4, Tb4b4b4...Te6edf3relativeUrlTb4b4b4] Tff7b72= Te6edf3urlTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;

T8b949e// ensure destination is expected length
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4.Te6edf3length Tff7b72=== T79c0ff32Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3pathTff7b72: Te6edf3relativeUrlTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// parse node id only
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3length Tff7b72=== T79c0ff32Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3urlTb4b4b4,
Te6edf3pathTff7b72: Tff7b72thisTb4b4b4.Te6edf3defaultNodePagePathTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e// unsupported url
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onNodePageUrlClickTb4b4b4(Te6edf3urlTb4b4b4, Te6edf3options Tff7b72= Tff7b72nullTb4b4b4, Te6edf3addToHistory Tff7b72= Tff7b72trueTb4b4b4, Te6edf3useCache Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3fieldData Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3options Tff7b72=== Ta5d6ff"*"Tb4b4b4) Tb4b4b4{
Te6edf3useCache Tff7b72= Tff7b72falseTb4b4b4; T8b949e// we want to send another request with the field data
Tff7b72const Te6edf3inputs Tff7b72= Tffa657documentTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff".nodeContainer input"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3inputValues Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3input Tff7b72of Te6edf3inputsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"radio" Tff7b72|| Te6edf3inputTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"checkbox"Tb4b4b4) Tb4b4b4{
T8b949e// Only add if the input is checked
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4.Te6edf3checkedTb4b4b4) Tb4b4b4{
Te6edf3inputValuesTb4b4b4[Te6edf3inputTb4b4b4.Te6edf3nameTb4b4b4] Tff7b72= Te6edf3inputTb4b4b4.Te6edf3valueTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// For other input types, just get the value
Te6edf3inputValuesTb4b4b4[Te6edf3inputTb4b4b4.Te6edf3name Tff7b72|| Te6edf3inputTb4b4b4.Te6edf3id Tff7b72|| Te6edf3inputTb4b4b4.Te6edf3typeTb4b4b4] Tff7b72= Te6edf3inputTb4b4b4.Te6edf3valueTb4b4b4;
Tb4b4b4}
Tb4b4b4}

Te6edf3fieldData Tff7b72= Te6edf3inputValuesTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3options Tff7b72!== Tff7b72null Tff7b72&& Te6edf3options Tff7b72!== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3useCache Tff7b72= Tff7b72falseTb4b4b4;
T8b949e// split options into an array of names
Tff7b72const Te6edf3validNames Tff7b72= Te6edf3optionsTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"|"Tb4b4b4)Tb4b4b4;

T8b949e// Select inputs within the container
Tff7b72const Te6edf3inputs Tff7b72= Tffa657documentTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff".nodeContainer input"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3inputValues Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;

T8b949e// Filter inputs by name and handle their values
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3input Tff7b72of Te6edf3inputsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3validNamesTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3inputTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"radio" Tff7b72|| Te6edf3inputTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"checkbox"Tb4b4b4) Tb4b4b4{
T8b949e// Only add if the input is checked
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4.Te6edf3checkedTb4b4b4) Tb4b4b4{
Te6edf3inputValuesTb4b4b4[Te6edf3inputTb4b4b4.Te6edf3nameTb4b4b4] Tff7b72= Te6edf3inputTb4b4b4.Te6edf3valueTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// For other input types, just get the value
Te6edf3inputValuesTb4b4b4[Te6edf3inputTb4b4b4.Te6edf3nameTb4b4b4] Tff7b72= Te6edf3inputTb4b4b4.Te6edf3valueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Te6edf3fieldData Tff7b72= Te6edf3inputValuesTb4b4b4;
Tb4b4b4}

Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3fieldDataTb4b4b4)Tb4b4b4;

T8b949e// open http urls in new tab
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"http://"Tb4b4b4) Tff7b72|| Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"https://"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tffa657windowTb4b4b4.Te6edf3openTb4b4b4(Te6edf3urlTb4b4b4, Ta5d6ff"_blank"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// lxmf urls should open the conversation
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"lxmf@"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3destinationHash Tff7b72= Te6edf3urlTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"lxmf@"Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4.Te6edf3length Tff7b72=== T79c0ff32Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3routeName Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isPopoutMode Tff7b72? Ta5d6ff"messages-popout" Tff7b72: Ta5d6ff"messages"Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3routeNameTb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3destinationHashTff7b72: Te6edf3destinationHashTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// attempt to parse url
Tff7b72const Te6edf3parsedUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3parsedUrl Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
T8b949e// reset archive states
Tff7b72thisTb4b4b4.Te6edf3isShowingArchivedVersion Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3archivedAt Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasArchivesForCurrentPage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pageArchives Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isArchiveDropdownOpen Tff7b72= Tff7b72falseTb4b4b4;

T8b949e// use parsed destination hash, or fallback to selected node destination hash
Tff7b72const Te6edf3destinationHash Tff7b72= Te6edf3parsedUrlTb4b4b4.Te6edf3destination_hash Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4;

T8b949e// download file
Tff7b72if Tb4b4b4(Te6edf3parsedUrlTb4b4b4.Te6edf3pathTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"/file/"Tb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// prevent simultaneous downloads
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isDownloadingNodeFileTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.existing_download_in_progress"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3isDownloadingNodeFile Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFilePath Tff7b72= Te6edf3parsedUrlTb4b4b4.Te6edf3pathTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"/"Tb4b4b4)Tb4b4b4.Te6edf3popTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileProgress Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadStartTime Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileLastProgressTime Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileLastProgressValue Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadSpeed Tff7b72= Tff7b72nullTb4b4b4;

T8b949e// start file download
Tff7b72thisTb4b4b4.Te6edf3downloadNomadNetFileTb4b4b4(
Te6edf3destinationHashTb4b4b4,
Te6edf3parsedUrlTb4b4b4.Te6edf3pathTb4b4b4,
Tb4b4b4(Te6edf3fileNameTb4b4b4, Te6edf3fileBytesBase64Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// Calculate final download speed based on actual file size
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadStartTimeTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3totalTime Tff7b72= Tb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadStartTimeTb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4; T8b949e// seconds
Tff7b72const Te6edf3fileSizeBytes Tff7b72= Te6edf3atobTb4b4b4(Te6edf3fileBytesBase64Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3totalTime Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadSpeed Tff7b72= Te6edf3fileSizeBytes Tff7b72/ Te6edf3totalTimeTb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// no longer downloading
Tff7b72thisTb4b4b4.Te6edf3isDownloadingNodeFile Tff7b72= Tff7b72falseTb4b4b4;

T8b949e// download file to browser
Tff7b72thisTb4b4b4.Te6edf3downloadFileFromBase64Tb4b4b4(Te6edf3fileNameTb4b4b4, Te6edf3fileBytesBase64Tb4b4b4)Tb4b4b4;

T8b949e// Clear speed after a moment
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadSpeed Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Te6edf3failureReasonTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// no longer downloading
Tff7b72thisTb4b4b4.Te6edf3isDownloadingNodeFile Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadSpeed Tff7b72= Tff7b72nullTb4b4b4;

T8b949e// show error message
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ffFailed to download file: Tffd700${Te6edf3failureReasonTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Te6edf3progressTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3currentTime Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3progressValue Tff7b72= Te6edf3progressTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileProgress Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3progressValue Tff7b72* T79c0ff100Tb4b4b4)Tb4b4b4;

T8b949e// Calculate estimated download speed based on progress rate
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadStartTime Tff7b72&& Te6edf3progressValue Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3elapsedTime Tff7b72= Tb4b4b4(Te6edf3currentTime Tff7b72- Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadStartTimeTb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4; T8b949e// seconds
Tff7b72if Tb4b4b4(Te6edf3elapsedTime Tff7b72> T79c0ff0.5Tb4b4b4) Tb4b4b4{
T8b949e// Only calculate after at least 0.5 seconds
T8b949e// Estimate total file size based on progress rate
T8b949e// If we've downloaded progressValue in elapsedTime, estimate total time
T8b949e// const estimatedTotalTime = elapsedTime / progressValue;
T8b949e// Estimate file size based on average download speed assumption
T8b949e// We'll refine this when download completes with actual size
T8b949e// For now, estimate based on typical mesh network file sizes (100KB-10MB range)
T8b949e// Use a conservative estimate that will be updated when download completes
Tff7b72const Te6edf3estimatedFileSize Tff7b72= T79c0ff500 Tff7b72* T79c0ff1024Tb4b4b4; T8b949e// Start with 500KB estimate
Tff7b72const Te6edf3estimatedBytesDownloaded Tff7b72= Te6edf3estimatedFileSize Tff7b72* Te6edf3progressValueTb4b4b4;
Tff7b72const Te6edf3estimatedSpeed Tff7b72= Te6edf3estimatedBytesDownloaded Tff7b72/ Te6edf3elapsedTimeTb4b4b4;

T8b949e// Only update if we have a reasonable estimate
Tff7b72if Tb4b4b4(Te6edf3estimatedSpeed Tff7b72> T79c0ff0 Tff7b72&& Te6edf3estimatedSpeed Tff7b72< T79c0ff100 Tff7b72* T79c0ff1024 Tff7b72* T79c0ff1024Tb4b4b4) Tb4b4b4{
T8b949e// Cap at 100MB/s
Tff7b72thisTb4b4b4.Te6edf3nodeFileDownloadSpeed Tff7b72= Te6edf3estimatedSpeedTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3nodeFileLastProgressTime Tff7b72= Te6edf3currentTimeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodeFileLastProgressValue Tff7b72= Te6edf3progressValueTb4b4b4;
Tb4b4b4}
Tb4b4b4)Tb4b4b4;

Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update selected node, so relative urls work correctly when returned by the new node
Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4[Te6edf3destinationHashTb4b4b4] Tff7b72|| Tb4b4b4{
Te6edf3display_nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.unknown_node"Tb4b4b4)Tb4b4b4,
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Tb4b4b4}Tb4b4b4;

T8b949e// navigate to node page
Tff7b72thisTb4b4b4.Te6edf3loadNodePageTb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3parsedUrlTb4b4b4.Te6edf3pathTb4b4b4, Te6edf3fieldDataTb4b4b4, Te6edf3addToHistoryTb4b4b4, Te6edf3useCacheTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// unsupported url
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.unsupported_url"Tb4b4b4) Tff7b72+ Te6edf3urlTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3downloadFileFromBase64Tff7b72: Tff7b72async Tff7b72function Tb4b4b4(Te6edf3fileNameTb4b4b4, Te6edf3fileBytesBase64Tb4b4b4) Tb4b4b4{
T8b949e// create blob from base64 encoded file bytes
Tff7b72const Te6edf3byteCharacters Tff7b72= Te6edf3atobTb4b4b4(Te6edf3fileBytesBase64Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3byteNumbers Tff7b72= Tff7b72new Tffa657ArrayTb4b4b4(Te6edf3byteCharactersTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3byteCharactersTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3byteNumbersTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3byteCharactersTb4b4b4.Te6edf3charCodeAtTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3byteArray Tff7b72= Tff7b72new Tffa657Uint8ArrayTb4b4b4(Te6edf3byteNumbersTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3byteArrayTb4b4b4]Tb4b4b4)Tb4b4b4;

T8b949e// create object url for blob
Tff7b72const Te6edf3objectUrl Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;

T8b949e// create link element to download blob
Tff7b72const Te6edf3link Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3href Tff7b72= Te6edf3objectUrlTb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3download Tff7b72= Te6edf3fileNameTb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3display Tff7b72= Ta5d6ff"none"Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3appendTb4b4b4(Te6edf3linkTb4b4b4)Tb4b4b4;

T8b949e// click link to download file in browser
Te6edf3linkTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// link element is no longer needed
Te6edf3linkTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// revoke object url to clear memory
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3objectUrlTb4b4b4)Tb4b4b4, T79c0ff10000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesPerSecondTff7b72: Tff7b72function Tb4b4b4(Te6edf3bytesPerSecondTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesPerSecondTb4b4b4(Te6edf3bytesPerSecondTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onNodeClickTff7b72: Tff7b72function Tb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{
T8b949e// update selected node
Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72= Te6edf3nodeTb4b4b4;

T8b949e// load default node page
Tff7b72thisTb4b4b4.Te6edf3loadNodePageTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3defaultNodePagePathTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onRenameFavouriteTb4b4b4(Te6edf3favouriteTb4b4b4) Tb4b4b4{
T8b949e// ask user for new display name
Tff7b72const Te6edf3displayName Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3promptTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.rename_favourite"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3displayName Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72try Tb4b4b4{
T8b949e// rename on server
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/favourites/Tffd700${Te6edf3favouriteTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/renameTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3display_nameTff7b72: Te6edf3displayNameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// reload favourites
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getFavouritesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.failed_rename_favourite"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onRemoveFavouriteTb4b4b4(Te6edf3favouriteTb4b4b4) Tb4b4b4{
T8b949e// ask user to confirm
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.remove_favourite_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3removeFavouriteTb4b4b4(Te6edf3favouriteTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onCloseNodeViewerTff7b72: Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// clear selected node
Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72= Tff7b72nullTb4b4b4;

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isPopoutModeTb4b4b4) Tb4b4b4{
Tffa657windowTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// update current route
Tff7b72const Te6edf3routeName Tff7b72= Tff7b72thisTb4b4b4.Te6edf3isPopoutMode Tff7b72? Ta5d6ff"nomadnetwork-popout" Tff7b72: Ta5d6ff"nomadnetwork"Tb4b4b4;
Tff7b72const Te6edf3routeOptions Tff7b72= Tb4b4b4{ Te6edf3nameTff7b72: Te6edf3routeName Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isPopoutMode Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3queryTb4b4b4) Tb4b4b4{
Te6edf3routeOptionsTb4b4b4.Te6edf3query Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3query Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3routeOptionsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getNomadnetPageDownloadCallbackKeyTff7b72: Tff7b72function Tb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3pagePathTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3pagePathTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getNomadnetFileDownloadCallbackKeyTff7b72: Tff7b72function Tb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3filePathTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff:Tffd700${Te6edf3filePathTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleArchiveDropdownTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isArchiveDropdownOpen Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isArchiveDropdownOpenTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isArchiveDropdownOpenTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchArchivesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3fetchArchivesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingArchives Tff7b72= Tff7b72trueTb4b4b4;

Tff7b72const Te6edf3parsed Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3parsedTb4b4b4) Tff7b72returnTb4b4b4;

Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.page.archives.get"Tb4b4b4,
Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3page_pathTff7b72: Te6edf3parsedTb4b4b4.Te6edf3pathTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3loadArchivedPageTb4b4b4(Te6edf3archiveIdTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isArchiveDropdownOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingNodePage Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isShowingArchivedVersion Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3archivedAt Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageProgress Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pageLoadStartedAt Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePageLoadPhase Tff7b72= Ta5d6ff"finding_path"Tb4b4b4;

Tff7b72const Te6edf3archive Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pageArchivesTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4) Tb4b4b4=> Te6edf3aTb4b4b4.Te6edf3id Tff7b72=== Te6edf3archiveIdTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3archiveTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72= Ta5d6ff`Tffd700${Te6edf3archiveTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff:Tffd700${Te6edf3archiveTb4b4b4.Te6edf3page_pathTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodePagePathUrlInput Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4;
Tb4b4b4}

Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.page.archive.load"Tb4b4b4,
Te6edf3archive_idTff7b72: Te6edf3archiveIdTb4b4b4,
Te6edf3download_idTff7b72: Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff1000000Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3manualArchiveTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedNode Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePagePath Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3nodePageContentTb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.archiving_page"Tb4b4b4)Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3parsed Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseNomadnetworkUrlTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3nodePagePathTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3parsedTb4b4b4) Tff7b72returnTb4b4b4;

Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.page.archive.add"Tb4b4b4,
Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedNodeTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3page_pathTff7b72: Te6edf3parsedTb4b4b4.Te6edf3pathTb4b4b4,
Te6edf3contentTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodePageContentTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatDateTb4b4b4(Te6edf3dateStrTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3dateStrTb4b4b4) Tff7b72return Ta5d6ff"Unknown Date"Tb4b4b4;
Tff7b72const Te6edf3date Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Te6edf3dateStrTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657isNaNTb4b4b4(Te6edf3dateTb4b4b4.Te6edf3getTimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72return Ta5d6ff"Invalid Date"Tb4b4b4;
Tff7b72return Te6edf3dateTb4b4b4.Te6edf3toLocaleStringTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatShortDurationTb4b4b4(Te6edf3msTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3ms Tff7b72== Tff7b72null Tff7b72|| Te6edf3ms Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3ms Tff7b72< T79c0ff1000Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3msTb4b4b4)Tffd700}Ta5d6ff msTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3s Tff7b72= Te6edf3ms Tff7b72/ T79c0ff1000Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72< T79c0ff60Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3s Tff7b72< T79c0ff10 Tff7b72? Ta5d6ff`Tffd700${Te6edf3sTb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff1Tb4b4b4)Tffd700}Ta5d6ff sTa5d6ff` Tff7b72: Ta5d6ff`Tffd700${Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3sTb4b4b4)Tffd700}Ta5d6ff sTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3m Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ T79c0ff60Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3rs Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3s Tff7b72- Te6edf3m Tff7b72* T79c0ff60Tb4b4b4)Tb4b4b4;
Tff7b72return Ta5d6ff`Tffd700${Te6edf3mTffd700}Ta5d6ffm Tffd700${Te6edf3rsTffd700}Ta5d6ffsTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getNodePathTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
T8b949e// clear previous known path
Tff7b72thisTb4b4b4.Te6edf3selectedNodePath Tff7b72= Tff7b72nullTb4b4b4;

Tff7b72try Tb4b4b4{
T8b949e// get path to destination
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff/pathTa5d6ff`Tb4b4b4)Tb4b4b4;

T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3selectedNodePath Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3pathTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3identifyTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// ask user to confirm
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"nomadnet.identify_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}

T8b949e// identify self to nomadnetwork node
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/nomadnetwork/Tffd700${Te6edf3destinationHashTffd700}Ta5d6ff/identifyTa5d6ff`Tb4b4b4)Tb4b4b4;

T8b949e// reload page
Tff7b72thisTb4b4b4.Te6edf3reloadNodePageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"Failed to identify!"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getHashPopoutValueTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3hash Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3match Tff7b72= Te6edf3hashTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/popout=([^&]+)/Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3match Tff7b72? Tffa657decodeURIComponentTb4b4b4(Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3downloadNomadNetFileTb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3filePathTb4b4b4, Te6edf3onSuccessCallbackTb4b4b4, Te6edf3onFailureCallbackTb4b4b4, Te6edf3onProgressCallbackTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// set callbacks for nomadnet filePath download
Tff7b72thisTb4b4b4.Te6edf3nomadnetFileDownloadCallbacksTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3getNomadnetFileDownloadCallbackKeyTb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3filePathTb4b4b4)Tb4b4b4] Tff7b72=
Tb4b4b4{
Te6edf3onSuccessCallbackTff7b72: Te6edf3onSuccessCallbackTb4b4b4,
Te6edf3onFailureCallbackTff7b72: Te6edf3onFailureCallbackTb4b4b4,
Te6edf3onProgressCallbackTff7b72: Te6edf3onProgressCallbackTb4b4b4,
Tb4b4b4}Tb4b4b4;

T8b949e// ask reticulum to download file from nomadnet
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.file.download"Tb4b4b4,
Te6edf3nomadnet_file_downloadTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3file_pathTff7b72: Te6edf3filePathTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3downloadNomadNetPageTb4b4b4(
Te6edf3destinationHashTb4b4b4,
Te6edf3pagePathTb4b4b4,
Te6edf3fieldDataTb4b4b4,
Te6edf3onSuccessCallbackTb4b4b4,
Te6edf3onFailureCallbackTb4b4b4,
Te6edf3onProgressCallback
Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// set callbacks for nomadnet page download
Tff7b72thisTb4b4b4.Te6edf3nomadnetPageDownloadCallbacksTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3getNomadnetPageDownloadCallbackKeyTb4b4b4(Te6edf3destinationHashTb4b4b4, Te6edf3pagePathTb4b4b4)Tb4b4b4] Tff7b72=
Tb4b4b4{
Te6edf3onSuccessCallbackTff7b72: Te6edf3onSuccessCallbackTb4b4b4,
Te6edf3onFailureCallbackTff7b72: Te6edf3onFailureCallbackTb4b4b4,
Te6edf3onProgressCallbackTff7b72: Te6edf3onProgressCallbackTb4b4b4,
Tb4b4b4}Tb4b4b4;

T8b949e// ask reticulum to download page from nomadnet
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.page.download"Tb4b4b4,
Te6edf3nomadnet_page_downloadTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3destinationHashTb4b4b4,
Te6edf3page_pathTff7b72: Te6edf3pagePathTb4b4b4,
Te6edf3field_dataTff7b72: Te6edf3fieldDataTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3cancelPageDownloadTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadId Tff7b72!== Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.download.cancel"Tb4b4b4,
Te6edf3download_idTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentPageDownloadIdTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3cancelFileDownloadTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3currentFileDownloadId Tff7b72!== Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"nomadnet.download.cancel"Tb4b4b4,
Te6edf3download_idTff7b72: Tff7b72thisTb4b4b4.Te6edf3currentFileDownloadIdTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72styleTb4b4b4>
Tb4b4b4.T56d364nodeContainer Tb4b4b4{
Tff7b72font-familyTb4b4b4: Ta5d6ff"Roboto Mono Nerd Font"Tb4b4b4, Te6edf3ui-monospaceTb4b4b4, Tff7b72monospaceTb4b4b4;
Tff7b72letter-spacingTb4b4b4: Tff7b72normalTb4b4b4;
Tff7b72font-variant-ligaturesTb4b4b4: Tff7b72noneTb4b4b4;
Tff7b72font-feature-settingsTb4b4b4: Tff7b72normalTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nodeContainer Tff7b72pre Tb4b4b4{
Tff7b72font-familyTb4b4b4: Tff7b72inheritTb4b4b4;
Tff7b72line-heightTb4b4b4: Tff7b72normalTb4b4b4;
Tff7b72letter-spacingTb4b4b4: Tff7b72inheritTb4b4b4;
Tff7b72font-variant-ligaturesTb4b4b4: Tff7b72inheritTb4b4b4;
Tff7b72font-feature-settingsTb4b4b4: Tff7b72inheritTb4b4b4;
Tb4b4b4}

Tff7b72preTb4b4b4.T56d364text-wrap Tff7b72> Tff7b72div Tb4b4b4{
Tff7b72displayTb4b4b4: Tff7b72flexTb4b4b4;
Tff7b72white-spaceTb4b4b4: Tff7b72preTb4b4b4;
Tb4b4b4}

Tff7b72preTb4b4b4.T56d364text-wrap Tff7b72> Tff7b72div Tff7b72> Tb4b4b4:Tf0883elast-child Tb4b4b4{
Tff7b72widthTb4b4b4: T79c0ff100Tffa657%Tb4b4b4;
Tff7b72white-spaceTb4b4b4: Tff7b72pre-wrapTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nodeContainer Tff7b72pre Tff7b72aTb4b4b4:Tf0883ehover Tb4b4b4{
Tff7b72text-decorationTb4b4b4: Tff7b72underlineTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nodeContainer Tff7b72inputTff7b72[Tff7b72typeTff7b72=Ta5d6ff"text"Tff7b72]Tff7b72,
Tb4b4b4.T56d364nodeContainer Tff7b72inputTff7b72[Tff7b72typeTff7b72=Ta5d6ff"password"Tff7b72] Tb4b4b4{
Tff7b72font-familyTb4b4b4: Tff7b72inheritTb4b4b4;
Tff7b72font-sizeTb4b4b4: T79c0ff1Tffa657emTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1Tb4b4b4;
Tff7b72paddingTb4b4b4: T79c0ff0Tb4b4b4;
Tff7b72marginTb4b4b4: T79c0ff0Tb4b4b4;
Tff7b72borderTb4b4b4: T79c0ff0Tb4b4b4;
Tff7b72border-bottomTb4b4b4: T79c0ff1Tffa657px Tff7b72solid Tff7b72currentColorTb4b4b4;
Tff7b72border-radiusTb4b4b4: T79c0ff0Tb4b4b4;
Tff7b72backgroundTb4b4b4: Tff7b72transparentTb4b4b4;
Tff7b72colorTb4b4b4: Tff7b72inheritTb4b4b4;
Tff7b72box-sizingTb4b4b4: Tff7b72content-boxTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4{
Tff7b72font-familyTb4b4b4: Te6edf3ui-sans-serifTb4b4b4, Te6edf3system-uiTb4b4b4, Tff7b72sans-serifTb4b4b4, Ta5d6ff"Apple Color Emoji"Tb4b4b4, Ta5d6ff"Segoe UI Emoji"Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tb4b4b4{
Tff7b72white-spaceTb4b4b4: Tff7b72pre-wrapTb4b4b4;
Tff7b72word-wrapTb4b4b4: Tff7b72break-wordTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72table Tb4b4b4{
Tff7b72white-spaceTb4b4b4: Tff7b72normalTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72h1 Tb4b4b4{
Tff7b72font-sizeTb4b4b4: T79c0ff1.875Tffa657remTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff2.25Tffa657remTb4b4b4;
Tff7b72font-weightTb4b4b4: T79c0ff700Tb4b4b4;
Tff7b72marginTb4b4b4: T79c0ff0.75Tffa657rem T79c0ff0 T79c0ff0.5Tffa657remTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72h2 Tb4b4b4{
Tff7b72font-sizeTb4b4b4: T79c0ff1.5Tffa657remTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff2Tffa657remTb4b4b4;
Tff7b72font-weightTb4b4b4: T79c0ff700Tb4b4b4;
Tff7b72marginTb4b4b4: T79c0ff0.65Tffa657rem T79c0ff0 T79c0ff0.45Tffa657remTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72h3 Tb4b4b4{
Tff7b72font-sizeTb4b4b4: T79c0ff1.25Tffa657remTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1.75Tffa657remTb4b4b4;
Tff7b72font-weightTb4b4b4: T79c0ff600Tb4b4b4;
Tff7b72marginTb4b4b4: T79c0ff0.55Tffa657rem T79c0ff0 T79c0ff0.4Tffa657remTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72h4 Tb4b4b4{
Tff7b72font-sizeTb4b4b4: T79c0ff1.125Tffa657remTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1.75Tffa657remTb4b4b4;
Tff7b72font-weightTb4b4b4: T79c0ff600Tb4b4b4;
Tff7b72marginTb4b4b4: T79c0ff0.5Tffa657rem T79c0ff0 T79c0ff0.35Tffa657remTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72h5Tff7b72,
Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72h6 Tb4b4b4{
Tff7b72font-sizeTb4b4b4: T79c0ff1Tffa657remTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1.5Tffa657remTb4b4b4;
Tff7b72font-weightTb4b4b4: T79c0ff600Tb4b4b4;
Tff7b72marginTb4b4b4: T79c0ff0.45Tffa657rem T79c0ff0 T79c0ff0.3Tffa657remTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72p Tb4b4b4{
Tff7b72marginTb4b4b4: T79c0ff0.4Tffa657rem T79c0ff0Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72ulTff7b72,
Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72ol Tb4b4b4{
Tff7b72marginTb4b4b4: T79c0ff0.4Tffa657rem T79c0ff0Tb4b4b4;
Tff7b72padding-leftTb4b4b4: T79c0ff1.5Tffa657remTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72blockquote Tb4b4b4{
Tff7b72marginTb4b4b4: T79c0ff0.5Tffa657rem T79c0ff0Tb4b4b4;
Tff7b72padding-leftTb4b4b4: T79c0ff0.75Tffa657remTb4b4b4;
Tff7b72border-leftTb4b4b4: T79c0ff3Tffa657px Tff7b72solid Tffa657rgbTb4b4b4(T79c0ff107 T79c0ff114 T79c0ff128Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72pre Tb4b4b4{
Tff7b72white-spaceTb4b4b4: Tff7b72pre-wrapTb4b4b4;
Tff7b72word-wrapTb4b4b4: Tff7b72break-wordTb4b4b4;
Tff7b72overflow-xTb4b4b4: Tff7b72autoTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72aTb4b4b4.T56d364nomadnet-linkTff7b72,
Tb4b4b4.T56d364nomad-markdown-host Tb4b4b4.T56d364nomad-markdown Tff7b72aTff7b72[Tff7b72hrefTff7b72^Tff7b72=Ta5d6ff"#"Tff7b72]Tb4b4b4:Tf0883enotTff7b72(Tff7b72[Tff7b72hrefTff7b72=Ta5d6ff"#"Tff7b72]Tff7b72) Tb4b4b4{
Tff7b72cursorTb4b4b4: Tff7b72pointerTb4b4b4;
Tff7b72pointer-eventsTb4b4b4: Tff7b72autoTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-page-html-host Tb4b4b4{
Tff7b72font-familyTb4b4b4: Te6edf3ui-sans-serifTb4b4b4, Te6edf3system-uiTb4b4b4, Tff7b72sans-serifTb4b4b4, Ta5d6ff"Apple Color Emoji"Tb4b4b4, Ta5d6ff"Segoe UI Emoji"Tb4b4b4;
Tff7b72min-heightTb4b4b4: T79c0ff100Tffa657%Tb4b4b4;
Tff7b72widthTb4b4b4: T79c0ff100Tffa657%Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-page-html-host Tb4b4b4.T56d364nomad-html-root Tb4b4b4{
Tff7b72colorTb4b4b4: Tffa657rgbTb4b4b4(T79c0ff229 T79c0ff231 T79c0ff235Tb4b4b4)Tb4b4b4;
Tff7b72min-heightTb4b4b4: T79c0ff100Tffa657%Tb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364nomad-page-html-host Tb4b4b4.T56d364nomad-html-root Tff7b72aTb4b4b4.T56d364nomadnet-linkTff7b72,
Tb4b4b4.T56d364nomad-page-html-host Tb4b4b4.T56d364nomad-html-root Tff7b72aTff7b72[Tff7b72hrefTff7b72^Tff7b72=Ta5d6ff"#"Tff7b72]Tb4b4b4:Tf0883enotTff7b72(Tff7b72[Tff7b72hrefTff7b72=Ta5d6ff"#"Tff7b72]Tff7b72) Tb4b4b4{
Tff7b72cursorTb4b4b4: Tff7b72pointerTb4b4b4;
Tff7b72pointer-eventsTb4b4b4: Tff7b72autoTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────